﻿using PHMEE.DTOS.StatusMonitor;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp.Application.Services;

namespace PHMEE.IServices.StatusMonitor
{
    public interface ISpectralAnalysisAppService : IApplicationService
    {
        /// <summary>
        /// 时域-加速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel> GetChartTimeAcceleration(Guid VesselId,ChartInput input);

        /// <summary>
        /// 时域-速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel> GetChartTimeSpeed(Guid VesselId, ChartInput input);

        /// <summary>
        /// 时域-包络
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel> GetChartTimeEnvelope(Guid VesselId, ChartInput input);

        /// <summary>
        /// 频域-加速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<float, float>> GetChartFrequencyAcceleration(Guid VesselId, ChartInput input);

        /// <summary>
        /// 频域-速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<float, float>> GetChartFrequencySpeed(Guid VesselId, ChartInput input);

        /// <summary>
        /// 包络-加速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<float, float>> GetChartEnvelopeAccleration(Guid VesselId, ChartInput input);

        /// <summary>
        /// 倒谱-加速度
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<float, float>> GetChartCepstrumAcceleration(Guid VesselId, ChartInput input);

        /// <summary>
        /// 趋势-加速度-有效值
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<string, object>> GetChartTrendAccelerationValid(Guid VesselId, ChartInputTrend input);

        /// <summary>
        /// 趋势-加速度-平均峰值
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<string, object>> GetChartTrendAccelerationAverage(Guid VesselId, ChartInputTrend input);

        /// <summary>
        /// 趋势-速度-有效值
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<string,object>> GetChartTrendSpeedValid(Guid VesselId, ChartInputTrend input);

        /// <summary>
        /// 趋势-包络-平均峰值
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel<string,object>> GetChartTrendEnvelopeAverage(Guid VesselId, ChartInputTrend input);

        /// <summary>
        /// 时域-加速度-最新一条数据
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PhMEEChartModel> GetChartTimeTdEngineSourceValueNewest(Guid VesselId, ChartInputNewest input);

        /// <summary>
        /// 特征值
        /// </summary>
        /// <param name="VesselId"></param>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<WaveDataFeature>> GetTdEngineFeatureValue(Guid VesselId, ChartInputTrend input);
    }
}
